package com.xd.server.sync.service.impl;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.xd.common.page.Pagination;
import com.xd.common.utils.OrikaUtils;
import com.xd.server.sync.dto.DataSyncLogDTO;
import com.xd.server.sync.mapper.IDataSyncLogMapper;
import com.xd.server.sync.po.DataSyncLogPO;
import com.xd.server.sync.service.IDataSyncLogService;
import com.xd.server.sync.vo.DataSyncLogVO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import javax.annotation.Resource;
import java.util.List;

/**
 * 数据同步日志(DataSyncLog)表服务实现类
 *
 * @author XD
 * @since 2023-03-28 16:51:03
 */
@Service("dataSyncLogService")
@Slf4j
public class DataSyncLogServiceImpl extends ServiceImpl<IDataSyncLogMapper, DataSyncLogPO> implements IDataSyncLogService {
    @Resource
    private IDataSyncLogMapper dataSyncLogMapper;

    /**
     * 增加
     *
     * @param dataSyncLogDTO DTO传输类
     */
    @Override
    public int saveOrUpdateDataSyncLog(DataSyncLogDTO dataSyncLogDTO) {
        // 根据类型特殊处理
        String id = dataSyncLogDTO.getId();
        final DataSyncLogPO dataSyncLogPO = OrikaUtils.map(dataSyncLogDTO, DataSyncLogPO.class);
        if (StringUtils.isEmpty(id)) {
            // 新增
            return dataSyncLogMapper.insert(dataSyncLogPO);
        } else {
            // 修改
            return dataSyncLogMapper.updateById(dataSyncLogPO);
        }


    }

    /**
     * 删除
     *
     * @param id 主键
     */
    @Override
    public int deleteDataSyncLog(String id) {
        return dataSyncLogMapper.deleteById(id);

    }


    /**
     * 查询一个
     *
     * @param id 主键
     * @return com.xd.vo.DataSyncLogVO
     */
    @Override
    public DataSyncLogVO findDataSyncLog(String id) {
        final DataSyncLogPO dataSyncLogPO = dataSyncLogMapper.selectById(id);
        return OrikaUtils.map(dataSyncLogPO, DataSyncLogVO.class);
    }

    /**
     * 查询所有
     *
     * @return java.util.List
     */
    @Override
    public List<DataSyncLogVO> findAllDataSyncLog() {
        final List<DataSyncLogPO> dataSyncLogPOS = dataSyncLogMapper.selectList(null);
        return OrikaUtils.mapAsList(dataSyncLogPOS, DataSyncLogVO.class);
    }

    /**
     * 查询所有-分页查询
     *
     * @return java.util.List
     */
    @Override
    public Page<DataSyncLogVO> findPageDataSyncLog(DataSyncLogDTO dataSyncLogDTO) {
        Page<DataSyncLogVO> page = Pagination.page(dataSyncLogDTO);
        List<DataSyncLogVO> DataSyncLogVOS = dataSyncLogMapper.findAll(page, dataSyncLogDTO);
        return page.setRecords(DataSyncLogVOS);
    }

}
